# coding=utf-8
"""
******************************用户帮助手册**************************************
用法说明：
这是一个智能化的医院信息管理系统。
程序启动后，您可执行以下操作：
输入 'a' —— 向数据库插入数据
输入 'b' —— 显示数据库所有数据
输入 'c' —— 查询数据库中的指定信息
输入 'h' —— 查看本帮助文档
输入 'd' —— 删除某条信息
输入 'e' ——查询医院情况（科室排班情况、医生的工作量、病人治疗情况）
不输入内容直接回车 —— 不执行操作，可重新输入
简易帮助提示为："a-插入/b-显示/c-查询/h-帮助/d-删除/''-默认操作"
另：输入[回车键]可退出程序

该系统的账号和密码如下：
    ID = ['XWZH','PXOZ','WOTN','LHTP']
    password = ['123456','123456','123456','123456']

示例：
请输入操作码：a 然后按[回车]
*****************************************************************************
"""

#打印帮助文档
def help_document():
    print(__doc__)
import tabulate
import pymysql.cursors
import datetime
import time
import os
from tabulate import tabulate
# 连接数据库
connect = pymysql.Connect(
host='localhost',
port=3306,
user='XWZH',
passwd='123456',
db='hospital',
charset='utf8'
)
# 获取游标
cursor = connect.cursor()

# 实现switch-case语句
class switch(object):
    def __init__(self, value):
        self.value = value
        self.fall = False

    def __iter__(self):
        """返回匹配方法一次，然后停止"""
        yield self.match
        raise StopIteration

    def match(self, *args):
        """指示是否进入一个 case 代码块"""
        if self.fall or not args:
            return True
        elif self.value in args:  # changed for v1.5, see below
            self.fall = True
            return True
        else:
            return False

def insert():
    # 插入数据
    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
    temp = input("输入你要插入的表格")
    while temp:
        for case in switch(temp):
            if case('1'):#插入部门数据
                try:
                    sql = "INSERT INTO department (dpname, dpno, dpadr,dptel) VALUES ('%s','%s','%s','%s' )"
                    dpname = input("部门名称")
                    dpno   = input("部门编号")
                    dpno = (1-len(dpno))*'0'+dpno;#将字符串转为数字
                    dpadr  = input("部门地址")
                    dptel  = input("部门电话")
                    data = (dpname, dpno, dpadr,dptel)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('2'):#插入医生数据
                try:
                    sql = "INSERT INTO doctor (dno, dname, duty,dsex,dage,dpno) VALUES ('%s','%s','%s',%d,%d,'%s' )"
                    dno = input("医生工号：")
                    dno = (3 - len(dno)) * '0' + dno;
                    dname = input("医生姓名：")
                    duty = input("职务：")
                    dsex = int(input("性别："))
                    dage = int(input("年龄："))
                    dpno = input("部门编号：")
                    data = (dno, dname, duty, dsex, dage, dpno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('3'):#插入病房数据
                try:
                    sql = "INSERT INTO room (rno, radr, dpno) VALUES ('%s','%s','%s' )"
                    rno = input("病房编号：")
                    rno = (4 - len(rno)) * '0' + rno;
                    radr   = input("病房地址")
                    dpno  = input("所属部门编号：")
                    dpno = (1 - len(dpno)) * '0' + dpno;
                    data = (rno, radr, dpno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('4'):#插入患者数据
                try:
                    sql = "INSERT INTO patient(pno ,pname,psex, page, dno, rno,illness, startdate, predictenddate) VALUES ('%s','%s',%d,%d,'%s','%s','%s','%s','%s')"
                    pno = input("患者编号：")
                    pno = (4 - len(pno)) * '0' + pno;
                    pname = input("患者姓名：")
                    psex = int(input("性别："))
                    page = int(input("年龄："))
                    illness = input("疾病种类：")
                    dno = input("主治医师编号：")
                    dno = (4 - len(dno)) * '0' + dno;
                    rno = input("所住房间号：")
                    startdate = datetime.datetime.now().strftime("%Y-%m-%d")
                    print("输入预计出院时间")
                    nian = input("年：")
                    yue = input("月：")
                    ri = input("日：")
                    predictenddate = nian + "-" + yue + "-" + ri
                    data = (pno, pname, psex, page, dno, rno, illness, startdate, predictenddate)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('5'):#插入护士数据
                try:
                    sql = "INSERT INTO nurse (nno, nname,nsex,nage) VALUES ('%s','%s',%d,%d)"
                    nno = input("护士工号：")
                    nno = (2 - len(nno)) * '0' + nno;
                    nname = input("护士姓名：")
                    nsex = int(input("性别："))
                    nage = int(input("年龄："))
                    data = (nno, nname,nsex,nage)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('6'):#插入药品数据
                try:
                    sql = "INSERT INTO drug (dgno, dgname,dgpro,dgnum,dgprice) VALUES ('%s','%s','%s',%d,%d)"
                    dgno = input("药品编号：")
                    dgno = (4-len(dgno))*'0'+dgno;
                    dgname = input("药品名称：")
                    dgpro = input("厂家：")
                    dgnum  = int(input("库存量："))
                    dgprice = int(input("价格："))
                    data = (dgno, dgname,dgpro,dgnum,dgprice)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('7'):#插入患者用药数据
                try:
                    sql = "INSERT INTO PD (dgno, pno, num) VALUES ('%s','%s',%d)"
                    dgno = input("药品编号：")
                    dgno = (4 - len(dgno)) * '0' + dgno;
                    pno = input("患者编号：")
                    pno = (4 - len(pno)) * '0' + pno;
                    print(pno)
                    print(dgno)
                    num  = int(input("用药数量："))
                    data = (dgno, pno, num)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case('8'):#插入护士护理数据
                try:
                    sql = "INSERT INTO PN (pno, nno, content, time) VALUES ('%s','%s','%s','%s')"
                    pno = input("患者编号：")
                    nno = input("护士工号：")
                    pno = (4 - len(pno)) * '0' + pno;
                    nno = (2 - len(nno)) * '0' + nno;
                    content = input("护理内容：")
                    time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    data = (pno, nno, content, time)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功插入', cursor.rowcount, '条数据')
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                except:
                    print("存在约束条件，不能插入该数据！")
                    print()
                    print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                    temp = input("输入你要插入的表格")
                break
            if case():
                print('无法识别操作码')
                print()
                print("1--科室表/2--医生表/3--病房表/4--患者表/5--护士表/6--药品表/7--患者用药表/8--护士护理表/enter--结束输入///--default")
                temp = input("输入你要插入的表格")
                break

def update():
    # 修改数据
    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
    temp = input("输入你要修改的内容：")
    while temp:
        for case in switch(temp):
            if case('1'):#修改药品库存
                try:
                    sql = "UPDATE drug SET  dgnum = %d WHERE dgno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    dgnum = int(input("修改后的库存："))
                    data = (dgnum, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case('2'):#修改药品编码
                try:
                    sql = "UPDATE drug SET  dgprice = %d WHERE dgno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4-len(dgno))*'0'+dgno
                    dgprice = int(input("修改后的药品价格："))
                    data = (dgprice, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case('3'):#修改患者用药数量
                try:
                    sql = "UPDATE PD SET  num = %d WHERE dgno = '%s' and pno = '%s' "
                    dgno = input("欲修改的药品编码:")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    num = int(input("修改后的用药数量："))
                    data = (num, dgno, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case('4'):#修改患者预计出院时间
                try:
                    sql = "UPDATE patient SET predictenddate = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    print("输入预计出院时间")
                    nian = input("年：")
                    yue = input("月：")
                    ri = input("日：")
                    predictenddate = nian + "-" + yue + "-" + ri
                    data = (predictenddate, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case('5'):#修改患者房间编号
                try:
                    sql = "UPDATE patient SET rno = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的患者编码:")
                    pno = (4 - len(pno)) * '0' + pno
                    rno = input("输入修改后的房间编号：")
                    rno = (4 - len(rno)) * '0' + rno
                    data = (rno, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case('6'):#修改医生职务
                try:
                    sql = "UPDATE doctor SET duty = '%s'  WHERE pno = '%s' "
                    pno = input("欲修改的医生编码:")
                    pno = (3 - len(pno)) * '0' + pno
                    duty = input("修改后的医生职务：")
                    data = (duty, pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功修改', cursor.rowcount, '条数据')
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                except:
                    print("存在约束条件，不能修改该数据！")
                    print()
                    print(
                        "1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                    temp = input("输入你要修改的内容：")
                break
            if case():
                print('无法识别操作码')
                print()
                print("1--修改药品库存/2--修改药品售价/3--修改患者使用药品数量/4--修改患者预计出院时间/5--修改患者房间号码/6--修改医生职务/enter--结束输入///--default")
                temp = input("输入你要修改的内容：")
                break

def select():
    # 查询数据
    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
    print("不输入直接回车enter结束查询///--default")
    temp = input("输入你要查询的内容：")
    while temp:
        for case in switch(temp):
            if case('1'):#查询医生姓名及部门
                try:
                    sql = "call sl_department('%s')"
                    dno = input("医生编号:")
                    dno = (3 - len(dno))*'0'+dno
                    data = (dno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生姓名:%s\t科室名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('2'):#查询科室患者及其主治医师
                try:
                    sql = "call sl_department_patientname('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者名:%s\t患者编号:%s\t主治医生姓名:%s\t主治医生编号:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('3'):#查询科室就诊人数
                try:
                    sql = "call sl_department_patientnum('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("科室患者数:%d\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('4'):#查询患者主治医生及其职务科室
                try:
                    sql = "call sl_doctor('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生姓名:%s\t职务:%s\t科室名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('5'):#查询医生主治的患者数量
                try:
                    sql = "call sl_doctor_patientnum('%s')"
                    dno = input("医生编号:")
                    dno = (3 - len(dno))*'0'+dno
                    data = (dno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("医生主治的患者数量:%d\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('6'):#查询患者用药情况
                try:
                    sql = "call sl_drug_patient('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者姓名:%s\t疾病:%s\t药名:%s\t数量:%d" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('7'):#查询患者应缴金额
                try:
                    sql = "call sl_money('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 应缴金额:%d" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('8'):#查询科室的病房
                try:
                    sql = "call sl_room('%c')"
                    dpno = input("科室编号:")
                    data = (dpno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("科室名:%s\t病房编号:%s\t病房地址:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('9'):#查询护士姓名
                try:
                    sql = "call sl_nurse('%s')"
                    nno = input("护士编号:")
                    nno = (2-len(nno))*'0'+nno
                    data = (nno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("护士编号:%s\t护士姓名:%s" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('10'):#查询患者进行护理时间、内容、负责护士
                try:
                    sql = "call sl_patient_nurse('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 患者名:%s\t病症:%s\t护理内容:%s\t护理时间:%s\t护士姓名:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('11'):#查询患者室友
                try:
                    sql = "call sl_patient_one_room('%s')"
                    pno = input("患者编号:")
                    pno = (4-len(pno))*'0'+pno
                    data = (pno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print(" 室友名:%s\t编号:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break

            if case('12'):#查询同一病房的患者
                try:
                    sql = "call sl_room_patient('%s')"
                    rno = input("房间编号:")
                    rno = (4-len(rno))*'0'+rno
                    data = (rno)
                    cursor.execute(sql % data)
                    for row in cursor.fetchall():
                        print("患者编号:%s\t 姓名:%s\t" % row)
                    print('共查找出', cursor.rowcount, '条数据')
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                except:
                    print("存在约束条件，不能查询该数据！")
                    print()
                    print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                    print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                    print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                    print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                    print("不输入直接回车enter结束查询///--default")
                    temp = input("输入你要查询的内容：")
                break
            if case():  # default
                print('please enter the OPcode...')
                print()
                print("1--查询医生姓名及部门/2--查询科室的每个患者及其主治医师/3--查询科室就诊人数")
                print("4--查询患者的主治医生及其职务科室/5--查询医生主治的患者数量/6-查询患者用药情况")
                print("7--查询患者应缴金额/8--查询科室的病房/9--根据护士编号查询护士姓名")
                print("10--查询患者进行护理的时间，内容及负责护士/11--以患者编号查询室友/12--查询同一病房的患者")
                print("不输入直接回车enter结束查询///--default")
                temp = input("输入你要查询的内容：")
                break

def delete():
    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
    temp = input("输入你要删除的内容：")
    while temp:
        for case in switch(temp):
            if case('1'):#删除患者
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE pno = '%s'"
                    pno = input("输入欲删除病人编号：")
                    print("删除护理记录！")
                    pno = (4 - len(pno)) * '0' + pno
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除用药记录！")
                    sql = "DELETE FROM PD  WHERE pno = '%s' "
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除患者记录！")
                    sql = "DELETE FROM patient  WHERE pno = '%s'"
                    data = (pno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                except:
                    print("存在约束条件，不能删除该数据！")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                break

            if case('2'):#删除护士
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE nno = '%s'"
                    nno = input("输入欲删除护士编号：")
                    print("删除护理记录！")
                    nno = (2 - len(nno)) * '0' + nno
                    data = (nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除护士记录！")
                    sql = "DELETE FROM nurse  WHERE nno = '%s' "
                    data = (nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                except:
                    print("存在约束条件，不能删除该数据！")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                break

            if case('3'):#删除药品数据
                try:
                    #删除数据
                    sql = "DELETE FROM PD  WHERE dgno = '%s'"
                    dgno = input("输入欲删除药品编号：")
                    print("删除用药记录！")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    data = (dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')

                    print("删除药品记录！")
                    sql = "DELETE FROM drug  WHERE dgno = '%s' "
                    data = (dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                except:
                    print("存在约束条件，不能删除该数据！")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                break
            if case('4'):#删除护理记录
                try:
                    #删除数据
                    sql = "DELETE FROM PN  WHERE pno = '%s' and nno = '%s'"
                    pno = input("欲删除患者编号：")
                    pno = (4 - len(pno)) * '0' + pno
                    nno = input("欲删除护士编号：")
                    nno = (2 - len(nno)) * '0' + nno
                    data = (pno, nno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                except:
                    print("存在约束条件，不能删除该数据！")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                break
            if case('5'):#删除用药记录
                try:
                    #删除数据
                    sql = "DELETE FROM PD  WHERE pno = '%s' and dgno = '%s'"
                    pno = input("欲删除患者编号：")
                    pno = (4 - len(pno)) * '0' + pno
                    dgno = input("欲删除药品编号：")
                    dgno = (4 - len(dgno)) * '0' + dgno
                    data = (pno, dgno)
                    cursor.execute(sql % data)
                    connect.commit()
                    print('成功删除', cursor.rowcount, '条数据')
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                except:
                    print("存在约束条件，不能删除该数据！")
                    print()
                    print("1--删除患者/2--删除护士/3--删除药品/4--删除护理记录/5--删除用药记录/enter--结束输入///--default")
                    temp = input("输入你要删除的内容：")
                break

def showDevelopers():
    print("*****开发人员信息*****")
    print("**20234001058 陈锦辉**")
    print("**20234001016 许雪雯**")
    print("**********************")

def check(id,ipassw):
    ID = ['XWZH','PXOZ','WOTN','LHTP']
    password = ['123456','123456','123456','123456']
    if id in ID and ipassw in password:
        print("登录成功！")
        return True
    print("账号或密码错误！")
    return False

def login():
    #登录界面
    print("欢迎使用医院信息管理系统！")
    print("正在进入系统...")
    time.sleep(2)
    os.system('cls')
    while True:
        rid = input("请输入您的账号：")
        ipassw = input("请输入您的密码：")
        if check(rid,ipassw)==True:
            break

def close():
    # 关闭连接
    cursor.close()
    connect.close()
def query_workofdepartment():
    sql = """
    SELECT 
    dp.dpname AS '科室名称',
    YEAR(p.startdate) AS '年份',
    WEEK(p.startdate) AS '周数',
    COUNT(p.pno) AS '新入院人数',
    GROUP_CONCAT(p.pname ORDER BY p.startdate) AS '患者列表'
FROM department dp
JOIN room r ON dp.dpno = r.dpno
JOIN patient p ON r.rno = p.rno
GROUP BY dp.dpname, YEAR(p.startdate), WEEK(p.startdate)
ORDER BY dp.dpname, YEAR(p.startdate) DESC, WEEK(p.startdate) DESC;
    """
    cursor.execute(sql)
    results = cursor.fetchall()
    print("科室名称\t 年份\t 周数\t新入院人数\t患者列表")
    for row in results:
        print(row[0],"\t",row[1],"\t",row[2],"\t",row[3],"\t\t",row[4],"\t")
def query_workofdoctor():
    sql="""
SELECT 
  d.dno AS '医生编号',
  d.dname AS '医生姓名',
  COUNT(p.pno) AS '负责患者数'
FROM doctor d
LEFT JOIN patient p ON d.dno = p.dno
GROUP BY d.dno, d.dname
ORDER BY COUNT(p.pno) DESC;
    """
    cursor.execute(sql)
    results = cursor.fetchall()
    print("医生编号\t医生姓名\t负责患者")
    for row in results:
        print(row[0],"\t",row[1],"\t",row[2])
def treatmentofpatient():
    sql="""
    SELECT 
  p.pno AS '患者编号',
  p.pname AS '姓名',
  p.illness AS '病症',
  d.dname AS '主治医生',
  GROUP_CONCAT(DISTINCT dg.dgname SEPARATOR ', ') AS '使用药物',
  SUM(pd.num * dg.dgprice) AS '总药费'
FROM patient p
JOIN doctor d ON p.dno = d.dno
LEFT JOIN PD pd ON p.pno = pd.pno
LEFT JOIN drug dg ON pd.dgno = dg.dgno
GROUP BY p.pno, p.pname, p.illness, d.dname;"""
    cursor.execute(sql)
    results = cursor.fetchall()
    headers = ["患者编号", "姓名", "病症", "主治医师", "总药费", "使用药物"]
    table_data = []
    for row in results:
        table_data.append([
            row[0],  # 患者编号
            row[1],  # 姓名
            row[2],  # 病症
            row[3],  # 主治医师
            f"{row[5]:.2f}",  # 总药费（格式化为两位小数）
            row[4]  # 使用药物
        ])

    print(tabulate(table_data, headers=headers, tablefmt="grid"))
def main():
    flag = False
    login()
    print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
    user_input = input('请输入您的选项: ')
    while user_input:
        for case in switch(user_input):
            if case('a'):  # 按下'a'键
                insert()
                os.system('cls')#清屏
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                break
            if case('b'):  # 按下'b'键
                select()
                os.system('cls')
                user_input = input('请输入您的选项: ')
                break
            if case("c"):  # 按下'c'键
                update()
                os.system('cls')
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                break
            if case("d"):  # 按下'd'键
                delete()
                os.system('cls')
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                break
            if case('h'):  # 按下'h'键
                help_document()
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                break
            if case('k'):
                showDevelopers()
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                os.system('cls')
                break
            if case('l'):
                query_workofdepartment()
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                os.system('cls')
                break
            if case('m'):
                query_workofdoctor()
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                os.system('cls')
                break
            if case('n'):
                treatmentofpatient()
                print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                user_input = input('请输入您的选项: ')
                os.system('cls')
                break
            if case():  # default
                if flag == False:
                    print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                    user_input = input('请输入您的选项: ')
                    flag = True
                else:
                    print("a—添加人员信息\nb—显示人员信息\nc—查询医患信息\nd—删除人员信息\nh—帮助手册\nk—开发人员信息\nl-科室排班情况\n-m医生工作情况\n-n病人治疗情况\n''—默认")
                    user_input = input('输入错误！请重新输入您的选项: ')
                break
    close()

if __name__ == "__main__":
    main()

